unit StatusECF;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls,idGlobal;

type
  TFormStatusECF = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    GroupBox2: TGroupBox;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox3: TGroupBox;
    Label22: TLabel;
    GroupBox4: TGroupBox;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    GroupBox5: TGroupBox;
    Label29: TLabel;
    GroupBox6: TGroupBox;
    Label30: TLabel;
    GroupBox7: TGroupBox;
    Label31: TLabel;
    GroupBox8: TGroupBox;
    Label32: TLabel;
    GroupBox9: TGroupBox;
    Label33: TLabel;
    GroupBox10: TGroupBox;
    Label34: TLabel;
    GroupBox11: TGroupBox;
    Label35: TLabel;
    GroupBox12: TGroupBox;
    Label36: TLabel;
    GroupBox13: TGroupBox;
    Label37: TLabel;
    GroupBox14: TGroupBox;
    Label38: TLabel;
    GroupBox15: TGroupBox;
    Label39: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    Label43: TLabel;
    Label44: TLabel;
    Label45: TLabel;
    Label46: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  type
        StatusGeraRFD = record
        RFD: Char;
        MFD: Char;
        ModeloECF: Array[0..1] of char ;
        NomeModelo: Array[0..19] of char ;
        Matricula: Array[0..19] of char ;
        Berco: Char;
        CRZ: Array[0..3] of char;
        DataMovimento: Array[0..5] of char;
    end;

var
  FormStatusECF: TFormStatusECF;
  bValor:String[32];
implementation

uses principal, funcoesapoio, declaracoes;

{$R *.dfm}

procedure TFormStatusECF.Button1Click(Sender: TObject);
var     iValor:Integer;
        bValor:String[32];
begin
        // Flags Fiscais--------------------------------------------------------------------
        FormStatusECF.Label1.Font.Color:=clBlack;
        FormStatusECF.Label2.Font.Color:=clBlack;
        FormStatusECF.Label3.Font.Color:=clBlack;
        FormStatusECF.Label4.Font.Color:=clBlack;
        FormStatusECF.Label5.Font.Color:=clBlack;
        FormStatusECF.Label6.Font.Color:=clBlack;
        iValor:=0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Flags Fiscais:'; WaitProcess;
        Resposta:= ECF_FlagsFiscais(iValor);
        VerificaRetornoFuncao(Resposta);
        bValor:= IntToBin(iValor);

        if bvalor[32]='1' then FormStatusECF.Label1.Font.Color:=clRed;
        if bvalor[31]='1' then FormStatusECF.Label2.Font.Color:=clRed;
        if bvalor[30]='1' then FormStatusECF.Label3.Font.Color:=clRed;
        if bvalor[28]='1' then FormStatusECF.Label4.Font.Color:=clRed;
        if bvalor[27]='1' then FormStatusECF.Label5.Font.Color:=clRed;
        if bvalor[26]='1' then FormStatusECF.Label6.Font.Color:=clRed;

        FormPrincipal.Memo1.Lines.Add('Flags Fiscais:'+inttostr(Resposta));
        FormPrincipal.Memo1.Lines.Add(' ');

end;

procedure TFormStatusECF.Button2Click(Sender: TObject);
var     ack, iValor, ivalor2:Integer;
begin
        // Verifica Estado IMpressora--------------------------------------------------------------------
        FormStatusECF.Label8.Font.Color:=clBlack;
        FormStatusECF.Label9.Font.Color:=clBlack;
        FormStatusECF.Label10.Font.Color:=clBlack;
        FormStatusECF.Label11.Font.Color:=clBlack;
        FormStatusECF.Label12.Font.Color:=clBlack;
        FormStatusECF.Label13.Font.Color:=clBlack;
        iValor:=0; iValor2:=0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Retorno Impressora:'; WaitProcess;
        Resposta:= ECF_RetornoImpressora(Ack, iValor, iValor2);
        VerificaRetornoFuncao(Resposta);

        bValor:= IntToBin(iValor);
        if bvalor[25]='1' then FormStatusECF.Label8.Font.Color:=clRed;
        if bvalor[26]='1' then FormStatusECF.Label9.Font.Color:=clRed;
        if bvalor[27]='1' then FormStatusECF.Label10.Font.Color:=clRed;
        if bvalor[29]='1' then FormStatusECF.Label11.Font.Color:=clRed;
        if bvalor[30]='1' then FormStatusECF.Label12.Font.Color:=clRed;
        if bvalor[31]='1' then FormStatusECF.Label13.Font.Color:=clRed;

        bValor:= IntToBin(iValor2);
        if bvalor[26]='1' then FormStatusECF.Label19.Font.Color:=clRed;
        if bvalor[27]='1' then FormStatusECF.Label18.Font.Color:=clRed;
        if bvalor[28]='1' then FormStatusECF.Label17.Font.Color:=clRed;
        if bvalor[29]='1' then FormStatusECF.Label16.Font.Color:=clRed;
        if bvalor[30]='1' then FormStatusECF.Label15.Font.Color:=clRed;
        if bvalor[31]='1' then FormStatusECF.Label14.Font.Color:=clRed;
        if bvalor[32]='1' then FormStatusECF.Label21.Font.Color:=clRed;


        FormPrincipal.Memo1.Lines.Add('Verifica Estado Impressora:'+inttostr(Resposta));
        FormPrincipal.Memo1.Lines.Add(' ');


end;

procedure TFormStatusECF.FormShow(Sender: TObject);
var tipo:integer;
     sgeral:Array[0..100] of char;
     statusgeral:StatusGeraRFD;
     cupom:String;
begin
        if Resposta = 1 then begin
                Button1.Click;
                Button2.Click;
        end;
        // Verifica Tipo IMpressora--------------------------------------------------------------------
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Tipo Impresora:'; WaitProcess;
        Resposta:= ECF_VerificaTipoImpressora(Tipo);
        FormPrincipal.Memo1.Lines.Add('Verifica Tipo da Impressora:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);

        case tipo of
        1: label22.Caption:='1 - Impressora fiscal, gaveta, autenticação';
        2: label22.Caption:='2 - Impressora fiscal, gaveta, cutter';
        3: label22.Caption:='3 - Impressora fiscal, presenter, autenticação';
        4: label22.Caption:='4 - Impressora fiscal, presenter, cutter';
        5: label22.Caption:='5 - bilhete de passagem, gaveta, autenticação';
        6: label22.Caption:='6 - bilhete de passagem, gaveta, cutter';
        7: label22.Caption:='7 - bilhete de passagem, presenter, autenticação';
        8: label22.Caption:='8 - bilhete de passagem, presenter, cutter';
        end;

        // StatusEstendido MFD -----------------------------------------------------------------
        tipo:=0;
        FormStatusECF.Label23.Font.Color:=clBlack;
        FormStatusECF.Label24.Font.Color:=clBlack;
        FormStatusECF.Label25.Font.Color:=clBlack;
        FormStatusECF.Label26.Font.Color:=clBlack;
        FormStatusECF.Label27.Font.Color:=clBlack;
        FormStatusECF.Label28.Font.Color:=clBlack;

        FormPrincipal.Statusbar1.Panels[0].Text:='Status Estendido MFD:'; WaitProcess;
        Resposta:= ECF_StatusEstendidoMFD(Tipo);
        VerificaRetornoFuncao(Resposta);

        bValor:= IntToBin(tipo);
        if bvalor[26]='1' then FormStatusECF.Label23.Font.Color:=clRed;
        if bvalor[27]='1' then FormStatusECF.Label24.Font.Color:=clRed;
        if bvalor[29]='1' then FormStatusECF.Label25.Font.Color:=clRed;
        if bvalor[30]='1' then FormStatusECF.Label26.Font.Color:=clRed;
        if bvalor[31]='1' then FormStatusECF.Label27.Font.Color:=clRed;
        if bvalor[32]='1' then FormStatusECF.Label28.Font.Color:=clRed;

        // STATUS CUPOM FISCAL ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Status Cupom Fiscal:'; WaitProcess;
        Resposta:= ECF_StatusCupomFiscal(cupom);
        FormPrincipal.Memo1.Lines.Add('Status Cupom Fiscal:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label29.Caption:='1 - Cupom Fiscal Aberto'
        else if cupom='0' then label29.Caption:='0 - Não há cupom fiscal aberto';

        // STATUS RELATORIO GERENCIAL ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Status Relatório Gerencial:'; WaitProcess;
        Resposta:= ECF_StatusRelatorioGerencial(Cupom);
        FormPrincipal.Memo1.Lines.Add('Status Relatório Gerencial:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label30.Caption:='1 - Relatório Gerencial Aberto'
        else if cupom='0' then label30.Caption:='0 - Não há relatório gerencial aberto';

        // STATUS CNF Vinculado ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Status CNF Vinculado:'; WaitProcess;
        Resposta:= ECF_StatusComprovanteNaoFiscalVinculado(Cupom);
        FormPrincipal.Memo1.Lines.Add('Status CNF Vinculado:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label31.Caption:='1 - CNF Vinculado Aberto'
        else if cupom='0' then label31.Caption:='0 - Não há CNF Vinculado aberto';

        // STATUS CNF Não Vinculado ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Status CNF Não Vinculado:'; WaitProcess;
        Resposta:= ECF_StatusComprovanteNaoFiscalVinculado(Cupom);
        FormPrincipal.Memo1.Lines.Add('Status CNF Não Vinculado:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label32.Caption:='1 - CNF Não Vinculado Aberto'
        else if cupom='0' then label32.Caption:='0 - Não há CNF Não Vinculado aberto';

        // Verifica Modelo ECF ------------------------------------------------------------------
        cupom:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Modelo ECF:'; WaitProcess;
        Resposta:= ECF_VerificaModeloEcf;
        FormPrincipal.Memo1.Lines.Add('VerificaModeloECF:'+inttostr(Resposta));
        case resposta of
        0: label33.Caption:='Falha ao ler o modelo';
        1: label33.Caption:='1 - IF ST100';
        2: label33.Caption:='2 - IF ST1000';
        3: label33.Caption:='3 - IF ST200';
        4: label33.Caption:='4 - IF ST120';
        5: label33.Caption:='5 - IF ST2000';
        50: label33.Caption:='50 - IF-S9000IE';
        51: label33.Caption:='51 - IF-S9000IIE';
        52: label33.Caption:='52 - IF-S9000IIIE';
        53: label33.Caption:='53 - IF-S9000II';
        54: label33.Caption:='54 - IF-S9000I';
        55: label33.Caption:='55 - IF-S7000IE';
        56: label33.Caption:='56 - IF-S7000II';
        57: label33.Caption:='57 - IF-S7000I';
        end;
        // Verifica horário de verão ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Horário de Verão:'; WaitProcess;
        Resposta:= ECF_VerificaHorarioVerao(Cupom);
        FormPrincipal.Memo1.Lines.Add('Verifica Horário de Verão:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label34.Caption:='1 - Horário de verão ativo'
        else if cupom='0' then label34.Caption:='0 - Horário normal';

        // Verifica Z Pendente ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Z Pendente:'; WaitProcess;
        Resposta:= ECF_VerificaZPendente(Cupom);
        FormPrincipal.Memo1.Lines.Add('Verifica Z Pendente:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '1' then label35.Caption:='1 - RZ Pendente (deve ser feito)'
        else if cupom='0' then label35.Caption:='0 - RZ Já efetuada';


        // Verifica Dia Aberto ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Dia Aberto:'; WaitProcess;
        Resposta:= ECF_VerificaDiaAberto(Cupom);
        FormPrincipal.Memo1.Lines.Add('Verifica Dia Aberto:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '0' then label36.Caption:='0 - "Dia encerrado" ou "Encerra o dia"'
        else if cupom='1' then label36.Caption:='1 - Pode registrar cupons e comprovantes';

        // Verifica Flag Corte MFD ------------------------------------------------------------------
        cupom:=#0; setlength(cupom,1);
        FormPrincipal.Statusbar1.Panels[0].Text:='Verifica Flag Corte MFD:'; WaitProcess;
        Resposta:= ECF_VerificaFlagCorteMFD(Cupom);
        FormPrincipal.Memo1.Lines.Add('Verifica Flag Corte MFD:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        if cupom = '0' then label37.Caption:='0 - Não acionar o corte'
        else if cupom='1' then label37.Caption:='1 - Acionar o corte no fechamento de doc'
        else if cupom = '2' then label37.caption:='2- Deixar posicionado, mas não cortar';

        // Verifica GEra RFD ------------------------------------------------------------------
        sgeral:=#0;
        FormPrincipal.Statusbar1.Panels[0].Text:='Gera RFD:'; WaitProcess;
        Resposta:= ECF_GeraRFD(Sgeral);

        CopyMemory(@StatusGeral,@sgeral,100);

        FormPrincipal.Memo1.Lines.Add('Gera RFD:'+inttostr(Resposta));
        VerificaRetornoFuncao(Resposta);
        FormPrincipal.Memo1.Lines.Add('Gera RFD:'+inttostr(Resposta));

        if statusGeral.RFD='0' then label39.Caption:='0 - sem RFD'
        else if statusGeral.RFD='1' then label39.Caption:='0 - RFD habilitado';

        if statusGeral.MFD='0' then label40.Caption:='0 - ECF sem MFD '
        else if statusGeral.MFD='1' then label40.Caption:='0 - ECF com MFD';

        Label41.Caption:='Cód. Modelo='+StatusGeral.ModeloECF;
        Label42.Caption:=StatusGeral.NomeModelo;
        Label43.Caption:=StatusGeral.Matricula;
        Label44.Caption:='Berço (2a. MF)='+StatusGeral.Berco;
        Label45.Caption:='No. Reduções='+StatusGeral.CRZ;
        Label46.Caption:='Movimento='+Format('%s/%s/%s',[Copy(StatusGeral.DataMovimento ,1,2),Copy(StatusGeral.DataMovimento,3,2),Copy(StatusGeral.DataMovimento,3,2)]);

end;

end.
